{
  "title": "SubmitFormSnippet",
  "description": "A template with two states: a SimpleSnippet and another that contains a form",
  "version": "1.1.0",
  "type": "object",
  "definitions": {
    "plainText": {
      "description": "Plain text (no HTML allowed)",
      "type": "string"
    },
    "richText": {
      "description": "Text with HTML subset allowed: i, b, u, strong, em, br",
      "type": "string"
    },
    "link_url": {
      "description": "Target for links or buttons",
      "type": "string",
      "format": "uri"
    }
  },
  "properties": {
    "locale": {
      "type": "string",
      "description": "Two to five character string for the locale code"
    },
    "country": {
      "type": "string",
      "description": "Two character string for the country code (used for SMS)"
    },
    "scene1_title": {
      "allof": [
        {"$ref": "#/definitions/plainText"},
        {"description": "snippet title displayed before snippet text"}
      ]
    },
    "scene1_text": {
      "allOf": [
        {"$ref": "#/definitions/richText"},
        {"description": "Main body text of snippet. HTML subset allowed: i, b, u, strong, em, br"}
      ]
    },
    "scene2_title": {
      "allOf": [
        {"$ref": "#/definitions/plainText"},
        {"description": "Title displayed before text in scene 2. Should be plain text."}
      ]
    },
    "scene2_text": {
      "allOf": [
        {"$ref": "#/definitions/richText"},
        {"description": "Main body text of snippet. HTML subset allowed: i, b, u, strong, em, br"}
      ]
    },
    "scene1_icon": {
      "type": "string",
      "description": "Snippet icon. 64x64px. SVG or PNG preferred."
    },
    "scene1_icon_dark_theme": {
      "type": "string",
      "description": "Snippet icon. Dark theme variant. 64x64px. SVG or PNG preferred."
    },
    "scene1_title_icon": {
      "type": "string",
      "description": "Small icon that shows up before the title / text. 16x16px. SVG or PNG preferred. Grayscale."
    },
    "scene1_title_icon_dark_theme": {
      "type": "string",
      "description": "Small icon that shows up before the title / text. Dark theme variant. 16x16px. SVG or PNG preferred. Grayscale."
    },
    "form_action": {
      "type": "string",
      "description": "Endpoint to submit form data."
    },
    "success_title": {
      "type": "string",
      "description": "(send to device) Title shown before text on successful registration."
    },
    "success_text": {
      "type": "string",
      "description": "Message shown on successful registration."
    },
    "error_text": {
      "type": "string",
      "description": "Message shown if registration failed."
    },
    "scene2_email_placeholder_text": {
      "type": "string",
      "description": "Value to show while input is empty."
    },
    "scene2_input_placeholder": {
      "type": "string",
      "description": "(send to device) Value to show while input is empty."
    },
    "scene2_button_label": {
      "type": "string",
      "description": "Label for form submit button"
    },
    "scene2_privacy_html": {
      "type": "string",
      "description": "Information about how the form data is used."
    },
    "scene2_disclaimer_html": {
      "type": "string",
      "description": "(send to device) Html for disclaimer and link underneath input box."
    },
    "scene2_dismiss_button_text": {
      "type": "string",
      "description": "Label for the dismiss button when the sign-up form is expanded."
    },
    "scene2_icon": {
      "type": "string",
      "description": "(send to device) Image to display above the form. 98x98px. SVG or PNG preferred."
    },
    "scene2_icon_dark_theme": {
      "type": "string",
      "description": "(send to device) Image to display above the form. Dark theme variant. 98x98px. SVG or PNG preferred."
    },
    "scene2_newsletter": {
      "type": "string",
      "description": "Newsletter/basket id user is subscribing to. Must be a value from the 'Slug' column here: https://basket.mozilla.org/news/. Default 'mozilla-foundation'."
    },
    "hidden_inputs": {
      "type": "object",
      "description": "Each entry represents a hidden input, key is used as value for the name property."
    },
    "scene1_button_label": {
      "allOf": [
        {"$ref": "#/definitions/plainText"},
        {"description": "Text for a button next to main snippet text that links to button_url. Requires button_url."}
      ]
    },
    "scene1_button_color": {
      "type": "string",
      "description": "The text color of the button. Valid CSS color."
    },
    "scene1_button_background_color": {
      "type": "string",
      "description": "The background color of the button. Valid CSS color."
    },
    "do_not_autoblock": {
      "type": "boolean",
      "description": "Used to prevent blocking the snippet after the CTA (link or button) has been clicked"
    },
    "include_sms": {
      "type": "boolean",
      "description": "(send to device) Allow users to send an SMS message with the form?"
    },
    "message_id_sms": {
      "type": "string",
      "description": "(send to device) Newsletter/basket id representing the SMS message to be sent."
    },
    "message_id_email": {
      "type": "string",
      "description": "(send to device) Newsletter/basket id representing the email message to be sent. Must be a value from the 'Slug' column here: https://basket.mozilla.org/news/."
    },
    "utm_campaign": {
      "type": "string",
      "description": "(fxa) Value to pass through to GA as utm_campaign."
    },
    "utm_term": {
      "type": "string",
      "description": "(fxa) Value to pass through to GA as utm_term."
    },
    "links": {
      "additionalProperties": {
        "url": {
          "allOf": [
            {"$ref": "#/definitions/link_url"},
            {"description": "The url where the link points to."}
          ]
        },
        "metric": {
          "type": "string",
          "description": "Custom event name sent with telemetry event."
        }
      }
    }
  },
  "additionalProperties": false,
  "required": ["scene1_text", "scene2_text", "scene1_button_label"],
  "dependencies": {
    "scene1_button_color": ["scene1_button_label"],
    "scene1_button_background_color": ["scene1_button_label"]
  }
}
